package com.cn.exception.hm;

/**
 * try-catch方式处理异常
 * 1. 定义格式
 * try {
 * 	可能出现异常的代码;
 * } catch(异常类名 变量名) {
 * 	异常的处理代码;
 * }
 *
 * 2. 执行流程
 * - 程序从 try 里面的代码开始执行
 * - 出现异常，就会跳转到对应的 catch 里面去执行
 * - 执行完毕之后，程序还可以继续往下执行
 *
 * 注意
 * 1. 如果 try 中没有遇到问题，怎么执行？
 *    会把try中所有的代码全部执行完毕,不会执行catch里面的代码
 *
 * 2. 如果 try 中遇到了问题，那么 try 下面的代码还会执行吗？
 *    那么直接跳转到对应的catch语句中,try下面的代码就不会再执行了
 *    当catch里面的语句全部执行完毕,表示整个体系全部执行完全,继续执行下面的代码
 *
 * 3. 如果出现的问题没有被捕获，那么程序如何运行？
 *    那么try...catch就相当于没有写.那么也就是自己没有处理.
 *    默认交给虚拟机处理.
 *
 * 4. 同时有可能出现多个异常怎么处理？
 *    出现多个异常,那么就写多个catch就可以了.
 *    注意点:如果多个异常之间存在子父类关系.那么父类一定要写在下面
 */
public class Exception_04_TryCatch {
    public static void main(String[] args) {
        System.out.println("开始");
        method();
        System.out.println("结束");
    }

    public static void method(){
        try{
            int[] arr = {1,2,3};
            System.out.println(arr[3]);
            System.out.println("这里能够访问到吗");
        }catch (ArrayIndexOutOfBoundsException e){
            System.out.println("你访问的数组索引不存在，请回去修改为正确的索引");
        }
        System.out.println("hello");
    }
}
